home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 2 / Gold Medal Software Volume 2 (Gold Medal) (1994).iso / prog / asm_0_m.arj / MACROS.ASM < prev    next >
Assembly Source File  |  1980-01-01  |  11KB  |  359 lines

  1.      .XLIST
  2. ;******************************************************************************
  3. ;
  4. ;      MACROS
  5. ;
  6. ;******************************************************************************
  7.  
  8. BEGINCOM MACRO SEGNAM
  9.      .SALL
  10.      PAGE  57,132
  11. SEGNAM     SEGMENT 'CODE'
  12.      ASSUME CS:SEGNAM,DS:SEGNAM,ES:SEGNAM
  13.      ORG   0100H
  14. O0O0O0O0:
  15.      ENDM
  16.  
  17.  
  18. ENDCOM     MACRO SEGNAM
  19. SEGNAM     ENDS
  20.      END   O0O0O0O0
  21.      ENDM
  22.  
  23.  
  24. @SVC MACRO CALL_NUM, PARM
  25. ;;GENERATES AN 'INT CALL_NUM', WITH PARM IN AH
  26.      IFNB <PARM>
  27.      MOV   AH,PARM
  28.      ENDIF
  29.      INT   CALL_NUM
  30.      ENDM
  31. ;
  32. ;
  33. ;
  34. @DOS MACRO FUNCTION,PARM
  35. ;;GENERATES A DOS FUNCTION CALL WITH PARM IN AL
  36.      IFNB <PARM>
  37.      MOV   AL,PARM
  38.      ENDIF
  39.      @SVC  21H,FUNCTION
  40.      ENDM
  41. ;
  42. ; SEND A MESSAGE
  43. ;
  44. @MSG MACRO TXT
  45.      LOCAL TXTSTR
  46.      LOCAL NSI
  47.      IFNB <TXT>
  48.      JMP   SHORT NSI
  49. TXTSTR     DB    TXT,13,10,'$'
  50. NSI:     PUSH  DX           ;SAVE REG
  51.      MOV   DX,OFFSET TXTSTR    ;POINT TO STRING
  52.      @DOS  9           ;DISPLAY IT
  53.      POP   DX           ;RESTORE REG
  54.      ENDIF
  55.      ENDM
  56. ;
  57. ;
  58. ;
  59. @DEX MACRO FUNCTION,PARM
  60. ;;GENERATES A DOS EXTENSION FUNCTION CALL WITH PARM IN AL VIA INT 15H
  61.      IFNB <PARM>
  62.      MOV   AL,PARM
  63.      ENDIF
  64.      @SVC  15H,FUNCTION
  65.      ENDM
  66. ;******************************************************************************
  67. ;
  68. ;  SPECIAL KEYBOARD CHARACTER EQUATES
  69. ;
  70. ;******************************************************************************
  71. KEYEQ     MACRO
  72. ;
  73. ;      ASCII CONTROL CODES
  74. ;
  75. $NUL     EQU   00H           ;
  76. $SOH     EQU   01H           ;^A
  77. $STX     EQU   02H           ;^B
  78. $ETX     EQU   03H           ;^C
  79. $EOT     EQU   04H           ;^D
  80. $ENQ     EQU   05H           ;^E
  81. $ACK     EQU   06H           ;^F
  82. $BEL     EQU   07H           ;BEEP
  83. $BS     EQU   08H           ;^H
  84. $HT     EQU   09H           ;^I
  85. $LF     EQU   0AH           ;LINE FEED
  86. $VT     EQU   0BH           ;^K
  87. $FF     EQU   0CH           ;^L
  88. $CR     EQU   0DH           ;CARRIAGE RETURN
  89. $SO     EQU   0EH           ;^N
  90. $SI     EQU   0FH           ;^O
  91. $DLE     EQU   10H           ;^P
  92. $DC1     EQU   11H           ;DEV CTL 1 = ^Q
  93. $DC2     EQU   12H           ;DEV CTL 2 = ^R
  94. $DC3     EQU   13H           ;DEV CTL 3 = ^S
  95. $DC4     EQU   14H           ;DEV CTL 4 = ^T
  96. $NAK     EQU   15H           ;^U
  97. $SYN     EQU   16H           ;^V
  98. $ETB     EQU   17H           ;^W
  99. $CAN     EQU   18H           ;^X
  100. $EM     EQU   19H           ;^Y
  101. $SUB     EQU   1AH           ;^Z
  102. $ESC     EQU   1BH           ;
  103. $FS     EQU   1CH           ;CURSOR RIGHT
  104. $GS     EQU   1DH           ;CURSOR LEFT
  105. $RS     EQU   1EH           ;CURSOR UP
  106. $US     EQU   1FH           ;CURSOR DOWM
  107. ;
  108. ; NUMERIC PAD KEYS
  109. ;
  110. $HOME     EQU   71
  111. $CSRUP     EQU   72
  112. $PGUP     EQU   73
  113. $CSRL     EQU   75
  114. $CSRR     EQU   77
  115. $END     EQU   79
  116. $CSRDN     EQU   80
  117. $PGDN     EQU   81
  118. $INS     EQU   82
  119. $DEL     EQU   83
  120. ;
  121. ; PROGRAM FUNCTION KEYS
  122. ;
  123. $PF01     EQU   3BH           ;STANDARD PF KEY
  124. $PF02     EQU   3CH           ;STANDARD PF KEY
  125. $PF03     EQU   3DH           ;STANDARD PF KEY
  126. $PF04     EQU   3EH           ;STANDARD PF KEY
  127. $PF05     EQU   3FH           ;STANDARD PF KEY
  128. $PF06     EQU   40H           ;STANDARD PF KEY
  129. $PF07     EQU   41H           ;STANDARD PF KEY
  130. $PF08     EQU   42H           ;STANDARD PF KEY
  131. $PF09     EQU   43H           ;STANDARD PF KEY
  132. $PF10     EQU   44H           ;STANDARD PF KEY
  133. ;
  134. ; SHIFTED PROGRAM FUNCTION KEYS
  135. ;
  136. $SPF01     EQU   54H           ;STANDARD PF KEY
  137. $SPF02     EQU   55H           ;STANDARD PF KEY
  138. $SPF03     EQU   56H           ;STANDARD PF KEY
  139. $SPF04     EQU   57H           ;STANDARD PF KEY
  140. $SPF05     EQU   58H           ;STANDARD PF KEY
  141. $SPF06     EQU   59H           ;STANDARD PF KEY
  142. $SPF07     EQU   5AH           ;STANDARD PF KEY
  143. $SPF08     EQU   5BH           ;STANDARD PF KEY
  144. $SPF09     EQU   5CH           ;STANDARD PF KEY
  145. $SPF10     EQU   5DH           ;STANDARD PF KEY
  146. ;
  147. ; CONTROL PROGRAM FUNCTION KEYS
  148. ;
  149. $CPF01     EQU   5EH           ;STANDARD PF KEY
  150. $CPF02     EQU   5FH           ;STANDARD PF KEY
  151. $CPF03     EQU   60H           ;STANDARD PF KEY
  152. $CPF04     EQU   61H           ;STANDARD PF KEY
  153. $CPF05     EQU   62H           ;STANDARD PF KEY
  154. $CPF06     EQU   63H           ;STANDARD PF KEY
  155. $CPF07     EQU   64H           ;STANDARD PF KEY
  156. $CPF08     EQU   65H           ;STANDARD PF KEY
  157. $CPF09     EQU   66H           ;STANDARD PF KEY
  158. $CPF10     EQU   67H           ;STANDARD PF KEY
  159. ;
  160. ; ALTERNATE PROGRAM FUNCTION KEYS
  161. ;
  162. $APF01     EQU   68H           ;STANDARD PF KEY
  163. $APF02     EQU   69H           ;STANDARD PF KEY
  164. $APF03     EQU   6AH           ;STANDARD PF KEY
  165. $APF04     EQU   6BH           ;STANDARD PF KEY
  166. $APF05     EQU   6CH           ;STANDARD PF KEY
  167. $APF06     EQU   6DH           ;STANDARD PF KEY
  168. $APF07     EQU   6EH           ;STANDARD PF KEY
  169. $APF08     EQU   6FH           ;STANDARD PF KEY
  170. $APF09     EQU   70H           ;STANDARD PF KEY
  171. $APF10     EQU   71H           ;STANDARD PF KEY
  172.      ENDM
  173. ;******************************************************************************
  174. ;
  175. ;  COMM CARD REGISTER EQUATES EQUATES
  176. ;
  177. ;******************************************************************************
  178. COMEQ     MACRO
  179. ;
  180. ;      INS8250 ACE REGISTERS FOR COMM PORT 1
  181. ;
  182. THRCOM1  EQU    3F8H           ;TRANS HOLDING REGISTER (WRITE)
  183. RBRCOM1  EQU    3F8H           ;RECEIVER BUFFER REGISTER (READ)
  184. IERCOM1  EQU    3F9H           ;INTERRUPT ENABLE REGISTER
  185. LCRCOM1  EQU    3FBH           ;LINE CONTROL REGISTER.
  186.                    ;BIT 7 OF LCR IS "DLAB".  DLAB MUST
  187.                    ;BE ZERO TO ACCESS THR, RBR, IER.
  188. MCRCOM1  EQU    3FCH           ;MODEM CONTROL REGISTER
  189. LSRCOM1  EQU    3FDH           ;LINE STATUS REGISTER
  190. MSRCOM1  EQU    3FEH           ;MODEM STATUS REGISTER
  191. ;
  192. ;      INS8250 ACE REGISTERS FOR COMM PORT 2
  193. ;
  194. THRCOM2  EQU    2F8H           ;TRANS HOLDING REGISTER (WRITE)
  195. RBRCOM2  EQU    2F8H           ;RECEIVER BUFFER REGISTER (READ)
  196. IERCOM2  EQU    2F9H           ;INTERRUPT ENABLE REGISTER
  197. LCRCOM2  EQU    2FBH           ;LINE CONTROL REGISTER.
  198.                    ;BIT 7 OF LCR IS "DLAB".  DLAB MUST
  199.                    ;BE ZERO TO ACCESS THR, RBR, IER.
  200. MCRCOM2  EQU    2FCH           ;MODEM CONTROL REGISTER
  201. LSRCOM2  EQU    2FDH           ;LINE STATUS REGISTER
  202. MSRCOM2  EQU    2FEH           ;MODEM STATUS REGISTER
  203.      ENDM
  204.  
  205.  
  206.  
  207. ;******************************************************************************
  208. ;
  209. ;  BIOS LOW CORE AREA DEFINITIONS
  210. ;
  211. ;******************************************************************************
  212. BIOSM     MACRO LSTCTL
  213.      IFB   <LSTCTL>
  214.      .XLIST
  215.      ENDIF
  216.      IFNB  <LSTCTL>
  217.      .LIST
  218.      ENDIF
  219. BIOSMEM  SEGMENT AT 0040H
  220.  
  221. ;
  222. ;  COMM CARD BASE ADDRESSES
  223. ;
  224. RS232_BASE LABEL WORD           ;OFFICIAL IBM TAG
  225. COM1BASE DW    ?           ;COMM CARD BASE ADDRESSES
  226. COM2BASE DW    ?
  227. COM3BASE DW    ?
  228. COM4BASE DW    ?
  229. ;
  230. ;  PRINTER CARD BASE ADDRESSES
  231. ;
  232. PRINTER_BASE LABEL WORD        ;OFFICIAL IBM TAG
  233. PRT1BASE DW    ?           ;PRINTER CARD BASE ADDRESSES
  234. PRT2BASE DW    ?
  235. PRT3BASE DW    ?
  236. PRT4BASE DW    ?
  237.  
  238. EQPFLAG  DW    ?           ;INSTALLED EQUIPMENT FLAG
  239. MFG_TST  DB    ?
  240. MEMORY_SIZE    DW   ?           ;MEM SIZE IN K BYTES
  241. MFG_ERR_FLAG   DW   ?           ;SCRATCHPAD FOR MFG ERROR CODES
  242. ;
  243. ;  KEYBOARD DATA AREAS
  244. ;
  245. KB_FLAG        DB   ?           ;KEYBOARD FLAG BYTE 1
  246. INS_STATE      EQU  80H        ;  INSERT IS ACTIVE
  247. CAPS_STATE     EQU  40H        ;  CAPS LOCK IS ACTIVE
  248. NUM_STATE      EQU  20H        ;  NUM LOCK IS ACTIVE
  249. SCROLL_STATE   EQU  10H        ;  SCROLL LOCK IS ACTIVE
  250. ALT_SHIFT      EQU  08H        ;  ALT SHIFT IS DEPRESSED
  251. CTL_SHIFT      EQU  04H        ;  CTL SHIFT IS DEPRESSED
  252. LEFT_SHIFT     EQU  02H        ;  LEFT SHIFT KEY IS DEPRESSED
  253. RIGHT_SHIFT    EQU  01H        ;  RIGHT SHIFT KEY IS DEPRESSED
  254.  
  255. KB_FLAG_1      DB   ?           ;SECOND KEYBOARD STATUS BYTE
  256.  
  257. INS_SHIFT      EQU  80H        ;INSERT KEY IS DEPRESSED
  258. CAPS_SHIFT     EQU  40H        ;CAPS LOCK KEY IS DEPRESSED
  259. NUM_SHIFT      EQU  20H        ;NUM LOCK KEY IS DEPRESSED
  260. SCROLL_SHIFT   EQU  10H        ;SCROLL LOCK KEY IS DEPRESSED
  261. HOLD_STATE     EQU  08H        ;SUSPEND STATE HAS BEEN TOGGLED
  262.  
  263. ALT_INPUT      DB   ?           ;STORAGE FOR ALTERNATE KEYPAD ENTRY
  264. BUFFER_HEAD    DW   ?           ;POINTER TO KB BUFFER START
  265. BUFFER_TAIL    DW   ?           ;POINTER TO KB BUFFER END
  266. KB_BUFFER      DW   16 DUP (?)       ;ROOM FOR 15 ENTRIES
  267. KB_BUFFER_END  LABEL WORD
  268. ;
  269. ; HEAD = TAIL = EMPTY BUFFER
  270.  
  271. NUM_KEY        EQU  69           ;SCAN CODE FOR NUM LOCK KEY
  272. SCROLL_KEY     EQU  70           ;SCROLL LOCK KEY
  273. ALT_KEY        EQU  56           ;ALT KEY
  274. CTL_KEY        EQU  29           ;CONTROL KEY
  275. CAPS_KEY       EQU  58           ;CAPS LOCK KEY
  276. LEFT_KEY       EQU  42           ;LEFT SHIFT KEY
  277. RIGHT_KEY      EQU  54           ;RIGHT SHIFT KEY
  278. INS_KEY        EQU  82           ;INSERT KEY
  279. DEL_KEY        EQU  83           ;DELETE KEY
  280.  
  281. ;
  282. ;  DISKETTE DATA AREAS
  283. ;
  284. SEEK_STATUS    DB   ?           ;DRIVE RECALIBRATION STATUS
  285.                    ;BIT 3-0 = DRIVE 3-0 NEEDS RECAL BEFORE NEXT
  286.                    ;SEEK IF BIT = 0
  287. INT_FLAG       EQU  80H        ;INTERRUPT OCCURANCE FLAG
  288.  
  289. MOTOR_STATUS   DB   ?           ;STATUS OF DRIVE MOTORS
  290.                    ;BIT 3-0 = DRIVE 3-0 MOTOR RUNNING
  291.                    ;BIT 7 = WRITE OPERATION, DELAY REQUIRED
  292. MOTOR_COUNT    DB   ?           ;TIME OUT COUNT FOR DRIVE MOTOR TURN OFF
  293. MOTOR_WAIT     EQU  37           ;2 SECOND DELAY (@ 18.2 INTS/SEC)
  294. DISKETTE_STATUS DB  ?           ;RETURN CODE STATUS BYTE
  295. TIME_OUT       EQU  80H        ;  ATTACHMENT FAILED TO RESPOND
  296. BAD_SEEK       EQU  40H        ;  SEEK OPS FAILED
  297. BAD_NEC        EQU  20H        ;  NEC CONTROLLER FAILED
  298. BAD_CRC        EQU  10H        ;  CRC ERROR ON DISK READ
  299. DMA_BOUNDARY   EQU  09H        ;  ATTEMPT DMA ACROSS 64K BOUNDARY
  300. BAD_DMA        EQU  08H        ;  DMA OVERRUN
  301. RECORD_NOT_FND EQU  04H        ;  REQUESTED SECTOR NOT FOUND
  302. WRITE_PROTECT  EQU  03H        ;  WRITE ATTEMPT ON PROT DISK
  303. BAD_ADDR_MARK  EQU  02H        ;  ADDRESS MARK NOT FOUND
  304. BAD_CMD        EQU  01H        ;  BAD COMMAND PASSED TO DISKETTE I/O
  305.  
  306. NEC_STATUS     DB   7 DUP (?)       ;STATUS BYTES FROM NEC
  307. ;
  308. ; VIDEO DISPLAY DATA AREA
  309. ;
  310. CRT_MODE       DB   ?           ;CURRENT CRT MODE
  311. CRT_COLS       DW   ?           ;# COLUMNS ON CRT
  312. CRT_LEN        DW   ?           ;LENGTH OF REGEN IN BYTES
  313. CRT_START      DW   ?           ;STARTING ADDRESS IN REGEN BUFFER
  314. CURSOR_POSN    DW   8 DUP (?)       ;CURSOR POSITION FOR EACH OF 8 PAGES
  315. CURSOR_MODE    DW   ?           ;CURRENT CURSOR MODE SETTING
  316. ACTIVE_PAGE    DB   ?           ;CURRENT ACTIVE PAGE
  317. ADDR_6845      DW   ?           ;I/O ADDRESS BASE FOR DISPLAY CARD
  318. CRT_MODE_SET   DB   ?           ;CURRENT SETTING OF THE 3X8 REGISTER
  319. CRT_PALETTE    DB   ?           ;CURRENT PALETTE SETTING - COLOR CARD
  320. ;
  321. ;  POST DATA AREA
  322. ;
  323. IO_ROM_INIT    DW   ?           ;POINTER TO OPTIONAL ROM INIT ROUTINE
  324. IO_ROM_SEG     DW   ?           ;IO ROM SEGMENT
  325. INTR_FLAG      DB   ?           ;FLAG TO INDICATE INTERRUPT OCCURED
  326. ;
  327. ;  TIMER DATA AREA
  328. ;
  329. TIMER_LOW      DW   ?           ;LOW WORD OF TIMER COUNT
  330. TIMER_HIGH     DW   ?           ;HI WORD OF TIMER COUNT
  331. TIMER_OFL      DB   ?           ;TIMER HAS OVERFLOWED SINCE LAST READ
  332. ;
  333. ;  SYSTEM DATA AREA
  334. ;
  335. BIOS_BREAK     DB   ?           ;BIT 7 = 1 IF BREAK KEY HIT
  336. RESET_FLAG     DW   ?           ;= 1234H IF KB RESET IN PROGRESS
  337. ;
  338. ;  FIXED DISK DATA AREAS
  339. ;
  340.            DW   ?
  341.            DW   ?
  342. ;
  343. ;  PRINTER AND RS232 TIME OUT VALUES
  344. ;
  345. PRINT_TIM_OUT  DB   4 DUP (?)       ;TIME OUT VALUES FOR EACH PRINTER
  346. RS232_TIM_OUT  DB   4 DUP (?)       ;TIME OUT VALUES FOR EACH COMM CARD
  347. ;
  348. ;  ADDITIONAL KEYBOARD DATA AREA
  349. ;
  350. BUFFER_START   DW   ?
  351. BUFFER_END     DW   ?
  352. BIOSMEM  ENDS
  353.      .LIST
  354.      ENDM
  355. ;
  356. ;  END OF MACRO LIBRARY
  357. ;
  358.      .LIST
  359.